ShowTable of Contents
はじめに
JMeter は Apache プロジェクトで提供されている Web アプリケーションのパフォーマンス測定や負荷テストに使用されるツールです。Domino アプリケーション、もちろん XPages アプリケーションでも、そのテストにパワフルに使用できます。JMeter を使用しての XPages アプリケーションのテストについて、すでに Wiki 記事「JMeterを使ってXPagesアプリケーションのパフォーマンステストを行う際の考慮点」で解説されています。しかし Apache JMeter 自体が少しわかりにくいところがあるので、XPages アプリケーション開発者向けにこの記事を書きました。
JMeter は Apache のページからダウンロードできます。この執筆時の最新版である 2.11 を基にこの記事を書いています。
JMeter の使用には JRE 6.0 以降が必要です。あらかじめインストールしておきます。
JMeter のページから apache-jmeter-2.11.zip をダウンロードし、適当なフォルダに展開します。ここでは c:\ 直下に展開し C:\apache-jmeter-2.11\ が作成されたことにしています。実行時に起動フォルダにログが作成されるので。log フォルダを作ってそこで実行すると良いです。
以下のようにコマンドラインから起動します。
C:\Users\test>cd \apache-jmeter-2.11\log
C:\apache-jmeter-2.11\log>c:\apache-jmeter-2.11\bin\jmeter.bat
|

JMeter を最初に起動すると、すでにテスト計画とワークベンチがあります。ここにさまざま部品を追加してテストシナリオを作成します。
Jmeter のテストを構成する部品をまとめます。
カテゴリ |
エレメント名
|
|
|
テスト計画(Test Plan)
|
JMeterで実施するテストの部品をまとめるルートとなる部品
|
|
ワークベンチ(WorkBench)
|
JMeter のテスト部品を仮置きする場所。コピー&ペーストに使ったりなど目的に応じして使用できる。テスト計画を保存するときにはワークベンチは保存されないので、必要に応じて個別に保存する必要がある。 |
スレッド (Threads(Users)) |
|
|
スレッドグループ(Thread Group)
|
実行するテストケースを取りまとめたもので、テスト実行時に起動するスレッドの数で複数ユーザーからのアクセスをシュミレートする。「スレッド数」が同時アクセスユーザー数で、「Ramp-up時間」によってそれらのスレッドがすべて起動されるまでの時間を指定することができる。スレッドグループの設定で、テストを一定数行って終了するか、無限に行うかも設定できる。 |
サンプルー |
|
|
HTTPリクエスト
(HTTP Request)
|
HTTP/HTTPSのリクエストをWebサーバーに送信するサンプラーのひとつ。個々のHTTTPリクエストでプロキシサーバーにも対応している。「Embedded Resource from HTML Files」の設定で、レスポンスに含まれるHTMLをパーズし、埋め込まれたイメージやその他のリソースを取得するように設定することもできる。 |
リスナー |
|
|
結果を表で表示
(View Results in Table)
|
個々のテストサンプルの結果を1行として資格化して表示するビジュアライザーです。このビジュアライザーはメモリの消費が大きいです。
|
|
結果をツリーで表示
(View Results Tree)
|
テストサンプルの結果をツリー形式で表示するビジュアライザーです。テストサンプルに対するレスポンスとともにレスポンス時間やレスポンスコードを表示します。 |
|
応答をファイルへ保存
Save Responses to a file
|
この部品はテスト計画のどこにでも配置することができます。スコープ内のテストサンプルに対して、応答データのファイルを作成します。この部品は昨日テストを作成する際に使用されることが多く、「結果をツリーで表示」などで表示しきれない大きなレスポンスを扱うのに適しています。 |
設定エレメント |
|
|
HTTPクッキーマネージャー
|
クッキーマネージャには2つの機能があります。
ひとつはWebブラウザのようにクッキーを保持してサーバーに送信する機能です。HTTPリクエストのレスポンスにクッキーが含まれていれば、そのクッキーはクッキーマネージャによって自動的に保存され、そのWebサイトへの今後のリクエストで使用されます。JMeterのそれぞれのスレッドは独自のクッキー保持エリアを持ちます。テストをしているWeb
サイトのセッションをクッキーで保持していても、各JMeterスレッドは独立したセッションを持つことになります。
ふたつめは、クッキーマネージャに手動でクッキーの追加をすることができます。しかしこの場合は追加したクッキーがすべてのJMeterのスレッドで共有されます。
|
|
HTTP認証マネージャ |
HTTP認証マネージャによって、アクセスに認証が必要なWebページに対するログインユーザーをひとつまたは複数指定することができます。アクセスの制限されたページにブラウザからアクセスしたときには、このような認証が表示され、ブラウザはログインダイアログを表示します。JMeterではこのようなページに遭遇すると、あらかじめ用意されたログイン情報を送信します。 |
ここでは記事で使用する部品のみをリストしました。その他の部品や詳細な情報は JMeter のヘルプを参照してください。
テストシナリオ
「テスト計画」にテストシナリオを作成しながら、これらの部品の使い方を解説します。
最初に起動したときには「テスト計画」と「ワークベンチ」だけが定義されています。この「テスト計画」を右クリックし「追加」→「Threads(Users)」→「スレッドグループ」を選択して「スレッドグループ」を作成します。「スレッドグループ」はテストの実行を制御するエレメントで、複数のユーザーからのアクセスをシュミレートするために複数のスレッドを立ち上げてテストを実行することができます。
パラメータ
|
説明 |
名前(Name)
|
スレッドグループを表す名前 |
スレッド数
(Number of Threads)
|
シュミレーションするユーザー数 |
Ramp-up期間
(Ramp-up Period)
|
すべてのスレッドが開始されるまでに要する時間。もし10スレッドでRamp-up期間として100秒が指定されたときは、直前のスレッドの開始から10秒で次のスレッドが開始され、テストサンプルがすべてそろうまでに100秒かかります。 |
ループ回数(Loop Count) |
テストケースを繰り返す回数を指定します。「無限ループ」を選択することで、手動で停止するまで実行し続けます。
|
ここでは試験的に以下のよう設定をします。
|
スレッド数: |
3 |
|
Ramp-up 期間(秒): |
5 |
|
ループ回数: |
1 |

HTTPリクエスト
スレッドグループ内に実際にテストを行うHTTPリクエストを記載します。スレッドグループを右クリックして「追加」→「サンプラー」→「HTTPリクエスト」を選択し、「HTTPリクエスト」を作成します。HTTPリクエストはブラウザからの個々のリクエストを定義します。
カテゴリ |
パラメータ |
説明 |
|
名前(Name) |
このサンプラーを示す名前
|
Webサーバー |
|
|
サーバーまたはIP |
Webサーバーのドメイン名またはIPアドレス |
|
ポート |
Webサーバーが開いているポート(デフォルト:80) |
HTTPリクエスト |
|
|
プロトコル |
HTTP、HTTPSまたはFILE(デフォルト: HTTP) |
|
メソッド |
GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE, PATCH (JAVA implementationで非サポート) |
|
パス |
アクセスするリソースのパス(例:/servlets/myServlet)を指定します。リソースにURLパラメータを指定するときには「Parameter」タブの「リクエストで送るパラメータ」に指定します。
「http://」や「https://」から指定したときは完全なURLとして扱われ、「ポート」や「プロトコル」の設定値は無視されます。
|
Proxy Server |
|
|
Server (proxy) |
リクエストを処理するプロキシサーバーのホスト名やIPアドレスを指定します。「http://」などは指定しません。 |
|
Port |
プロキシサーバーでの待受けポートを指定します。 |
|
Username |
(オプション)プロキシサーバーのユーザー名 |
|
Password |
(オプション)プロキシサーバーのパスワード(この値はテスト計画に暗号化されずに保存されます)
|
|
名前: |
developerWorks ページアクセス |
|
サーバー名: |
www.ibm.com |
|
メソッド: |
GET |
|
パス: |
/developerworks/jp/ |